ராஃப்ட் பரவலாக்கப்பட்ட ஒருமித்த கருத்து அல்காரிதம், அதன் முக்கியக் கோட்பாடுகள், செயல்பாட்டு நிலைகள், நடைமுறைச் செயலாக்கக் கருத்துகள் மற்றும் மீள்திறன் கொண்ட, உலகளவில் அளவிடக்கூடிய அமைப்புகளை உருவாக்குவதற்கான அதன் நிஜ உலகப் பயன்பாடுகளை ஆராயுங்கள்.
பரவலாக்கப்பட்ட ஒருமித்த கருத்தில் தேர்ச்சி பெறுதல்: உலகளாவிய அமைப்புகளுக்கான ராஃப்ட் அல்காரிதம் செயலாக்கத்தின் ஒரு ஆழமான பார்வை
நாம் பெருகிய முறையில் ஒன்றோடொன்று இணைக்கப்பட்ட உலகில், மின் வணிகத் தளங்கள் மற்றும் நிதி நிறுவனங்கள் முதல் கிளவுட் கம்ப்யூட்டிங் உள்கட்டமைப்பு மற்றும் நிகழ்நேரத் தொடர்பு கருவிகள் வரை கிட்டத்தட்ட ஒவ்வொரு டிஜிட்டல் சேவைக்கும் பரவலாக்கப்பட்ட அமைப்புகளே முதுகெலும்பாக உள்ளன. இந்த அமைப்புகள் வேலைச்சுமைகளையும் தரவுகளையும் பல கணினிகளில் விநியோகிப்பதன் மூலம் ஒப்பிடமுடியாத அளவிடுதல், கிடைக்கும் தன்மை மற்றும் மீள்திறனை வழங்குகின்றன. இருப்பினும், இந்த சக்தி ஒரு குறிப்பிடத்தக்க சவாலுடன் வருகிறது: நெட்வொர்க் தாமதங்கள், கணுக்களின் தோல்விகள் மற்றும் ஒரே நேரத்தில் நடைபெறும் செயல்பாடுகள் ஆகியவற்றின் மத்தியிலும், கணினியின் நிலை குறித்து அனைத்து கூறுகளும் உடன்படுகின்றன என்பதை உறுதிப்படுத்துவது. இந்த அடிப்பட சிக்கல் பரவலாக்கப்பட்ட ஒருமித்த கருத்து (distributed consensus) என அழைக்கப்படுகிறது.
ஒரு ஒத்திசைவற்ற, தோல்விக்கு ஆளாகக்கூடிய பரவலாக்கப்பட்ட சூழலில் ஒருமித்த கருத்தை அடைவது மிகவும் சிக்கலானது. பல தசாப்தங்களாக, இந்த சவாலைத் தீர்ப்பதில் Paxos ஆதிக்கம் செலுத்தும் அல்காரிதமாகவும், அதன் தத்துவார்த்த நம்பகத்தன்மைக்காகப் போற்றப்பட்டாலும், அதன் சிக்கலான தன்மை மற்றும் செயல்படுத்துவதில் உள்ள சிரமத்திற்காக அடிக்கடி விமர்சிக்கப்பட்டது. பின்னர் ராஃப்ட் வந்தது, இது ஒரு முதன்மை இலக்குடன் வடிவமைக்கப்பட்ட ஒரு அல்காரிதம்: புரிந்துகொள்ளும் தன்மை (understandability). ராஃப்ட், பிழை சகிப்புத்தன்மை மற்றும் செயல்திறன் ஆகியவற்றில் Paxos-க்கு சமமாக இருப்பதை நோக்கமாகக் கொண்டுள்ளது, ஆனால் டெவலப்பர்கள் எளிதில் புரிந்துகொண்டு கட்டமைக்கும் வகையில் கட்டமைக்கப்பட்டுள்ளது.
இந்த விரிவான வழிகாட்டி ராஃப்ட் அல்காரிதத்தை ஆழமாக ஆராய்கிறது, அதன் அடிப்படைக் கோட்பாடுகள், செயல்பாட்டு வழிமுறைகள், நடைமுறைச் செயலாக்கக் கருத்துகள் மற்றும் வலுவான, உலகளவில் பரவலாக்கப்பட்ட பயன்பாடுகளை உருவாக்குவதில் அதன் முக்கியப் பங்கு ஆகியவற்றை ஆராய்கிறது. நீங்கள் ஒரு அனுபவம் வாய்ந்த கட்டடக் கலைஞர், ஒரு பரவலாக்கப்பட்ட அமைப்புகள் பொறியாளர் அல்லது உயர் கிடைக்கும் தன்மை கொண்ட சேவைகளை உருவாக்க விரும்பும் ஒரு டெவலப்பராக இருந்தாலும், நவீன கணினியின் சிக்கல்களில் தேர்ச்சி பெறுவதற்கான ஒரு அவசியமான படியாக ராஃப்டைப் புரிந்துகொள்வது விளங்குகிறது.
நவீன கட்டமைப்புகளில் பரவலாக்கப்பட்ட ஒருமித்த கருத்தின் இன்றியமையாத தேவை
ஒரு வினாடிக்கு மில்லியன் கணக்கான பரிவர்த்தனைகளைச் செயல்படுத்தும் ஒரு உலகளாவிய மின் வணிகத் தளத்தைக் கற்பனை செய்து பாருங்கள். வாடிக்கையாளர் தரவு, இருப்பு நிலைகள், ஆர்டர் நிலைகள்—இவை அனைத்தும் கண்டங்கள் முழுவதும் பரவியிருக்கும் எண்ணற்ற தரவு மையங்களில் சீராக இருக்க வேண்டும். பல சேவையகங்களில் பரவியிருக்கும் ஒரு வங்கி அமைப்பின் பேரேடு, ஒரு கணக்கு இருப்பில் ஒரு கண நேர கருத்து வேறுபாட்டைக் கூடத் தாங்க முடியாது. இந்தச் சூழ்நிலைகள் பரவலாக்கப்பட்ட ஒருமித்த கருத்தின் முக்கியத்துவத்தை எடுத்துக்காட்டுகின்றன.
பரவலாக்கப்பட்ட அமைப்புகளின் உள்ளார்ந்த சவால்கள்
பரவலாக்கப்பட்ட அமைப்புகள், அவற்றின் இயல்பிலேயே, ஒற்றைக்கல் பயன்பாடுகளில் இல்லாத எண்ணற்ற சவால்களை அறிமுகப்படுத்துகின்றன. இந்த சவால்களைப் புரிந்துகொள்வது ராஃப்ட் போன்ற அல்காரிதங்களின் நேர்த்தியையும் அவசியத்தையும் பாராட்டுவதற்கு முக்கியமானது:
- பகுதித் தோல்விகள் (Partial Failures): ஒரு ஒற்றை சேவையகம் வேலை செய்யும் அல்லது முற்றிலும் தோல்வியடையும் என்பதைப் போலல்லாமல், ஒரு பரவலாக்கப்பட்ட அமைப்பில் சில கணுக்கள் தோல்வியடையலாம், மற்றவை தொடர்ந்து செயல்படும். ஒரு சேவையகம் செயலிழக்கலாம், அதன் நெட்வொர்க் இணைப்பு துண்டிக்கப்படலாம், அல்லது அதன் வட்டு சிதைவடையலாம், இவை அனைத்தும் கிளஸ்டரின் மற்ற பகுதிகள் செயல்படும்போதே நிகழலாம். இந்த பகுதித் தோல்விகள் இருந்தபோதிலும் அமைப்பு தொடர்ந்து சரியாகச் செயல்பட வேண்டும்.
- நெட்வொர்க் பிரிவினைகள் (Network Partitions): கணுக்களை இணைக்கும் நெட்வொர்க் எப்போதும் நம்பகமானதாக இருப்பதில்லை. கணுக்களின் துணைக்குழுக்களுக்கு இடையேயான தொடர்பு துண்டிக்கப்படும்போது ஒரு நெட்வொர்க் பிரிவினை ஏற்படுகிறது, இதனால் சில கணுக்கள் இயங்கிக்கொண்டிருந்தாலும் அவை தோல்வியடைந்ததாகத் தோன்றும். காலாவதியான அல்லது சீரற்ற தகவல்களின் அடிப்படையில் அமைப்பின் வெவ்வேறு பகுதிகள் சுயாதீனமாக செயல்படும் இந்த "பிளவு-மூளை" (split-brain) சூழ்நிலைகளைத் தீர்ப்பது ஒரு முக்கிய ஒருமித்த கருத்தின் சிக்கலாகும்.
- ஒத்திசைவற்ற தொடர்பு (Asynchronous Communication): கணுக்களுக்கு இடையிலான செய்திகள் தாமதமாகலாம், வரிசைமாறலாம் அல்லது முழுவதுமாக இழக்கப்படலாம். செய்திகள் விநியோகிக்கப்படும் நேரத்தைப் பற்றி எந்த உலகளாவிய கடிகாரமோ அல்லது உத்தரவாதமோ இல்லை, இது நிகழ்வுகளின் சீரான வரிசையையோ அல்லது ஒரு உறுதியான அமைப்பு நிலையையோ நிறுவுவதை கடினமாக்குகிறது.
- ஒரே நேரத்தில் செயல்படுதல் (Concurrency): பல கணுக்கள் ஒரே தரவைத் திருத்த அல்லது ஒரே நேரத்தில் செயல்களைத் தொடங்க முயற்சிக்கலாம். இந்த செயல்பாடுகளை ஒருங்கிணைக்க ஒரு வழிமுறை இல்லாமல், முரண்பாடுகளும் சீரற்றத்தன்மைகளும் தவிர்க்க முடியாதவை.
- கணிக்க முடியாத தாமதம் (Unpredictable Latency): குறிப்பாக உலகளவில் பரவலாக்கப்பட்ட வரிசைப்படுத்தல்களில், நெட்வொர்க் தாமதம் கணிசமாக மாறுபடலாம். ஒரு பிராந்தியத்தில் வேகமான செயல்பாடுகள் மற்றொரு பிராந்தியத்தில் மெதுவாக இருக்கலாம், இது முடிவெடுக்கும் செயல்முறைகளையும் ஒருங்கிணைப்பையும் பாதிக்கிறது.
ஏன் ஒருமித்த கருத்து நம்பகத்தன்மையின் மூலைக்கல்
ஒருமித்த கருத்து அல்காரிதங்கள் இந்த சவால்களைத் தீர்ப்பதற்கான ஒரு அடிப்படைக் கட்டுமானத் தொகுதியை வழங்குகின்றன. அவை நம்பகமற்ற கூறுகளின் தொகுப்பை கூட்டாக ஒரே, மிகவும் நம்பகமான மற்றும் ஒத்திசைவான அலகாகச் செயல்பட உதவுகின்றன. குறிப்பாக, ஒருமித்த கருத்து அடைய உதவுகிறது:
- நிலை இயந்திரப் பிரதிபலிப்பு (State Machine Replication - SMR): பல பிழை சகிப்புத்தன்மை கொண்ட பரவலாக்கப்பட்ட அமைப்புகளின் பின்னணியில் உள்ள முக்கிய யோசனை. அனைத்து கணுக்களும் செயல்பாடுகளின் வரிசையில் உடன்பட்டால், மற்றும் ஒவ்வொரு கணுவும் ஒரே ஆரம்ப நிலையில் தொடங்கி அந்த செயல்பாடுகளை அதே வரிசையில் செயல்படுத்தினால், அனைத்து கணுக்களும் ஒரே இறுதி நிலையை அடையும். இந்த உலகளாவிய செயல்பாடுகளின் வரிசையில் உடன்படுவதற்கான வழிமுறையே ஒருமித்த கருத்து.
- உயர் கிடைக்கும் தன்மை (High Availability): சிறுபான்மையான கணுக்கள் தோல்வியடைந்தாலும் ஒரு அமைப்பு தொடர்ந்து செயல்பட அனுமதிப்பதன் மூலம், ஒருமித்த கருத்து சேவைகள் அணுகக்கூடியதாகவும் செயல்படக்கூடியதாகவும் இருப்பதை உறுதிசெய்கிறது, வேலையிழப்பு நேரத்தைக் குறைக்கிறது.
- தரவு நிலைத்தன்மை (Data Consistency): இது தரவுகளின் அனைத்து பிரதிகளும் ஒத்திசைவில் இருப்பதை உறுதிசெய்கிறது, முரண்பாடான புதுப்பிப்புகளைத் தடுக்கிறது மற்றும் வாடிக்கையாளர்கள் எப்போதும் மிகச் சமீபத்திய மற்றும் சரியான தகவலைப் படிப்பதை உறுதிசெய்கிறது.
- பிழை சகிப்புத்தன்மை (Fault Tolerance): இந்த அமைப்பு ஒரு குறிப்பிட்ட எண்ணிக்கையிலான தன்னிச்சையான கணுக்களின் தோல்விகளை (பொதுவாக செயலிழப்பு தோல்விகள்) சகித்துக்கொண்டு, மனித தலையீடு இல்லாமல் முன்னேற முடியும்.
ராஃப்டை அறிமுகப்படுத்துதல்: ஒருமித்த கருத்துக்கான ஒரு புரிந்துகொள்ளக்கூடிய அணுகுமுறை
ராஃப்ட் கல்வித்துறையிலிருந்து ஒரு தெளிவான நோக்கத்துடன் உருவானது: பரவலாக்கப்பட்ட ஒருமித்த கருத்தை அணுகக்கூடியதாக மாற்றுவது. அதன் ஆசிரியர்களான டியாகோ ஓங்காரோ மற்றும் ஜான் ஓஸ்டர்ஹவுட், ராஃப்டை புரிந்துகொள்ளும் தன்மைக்காக வெளிப்படையாக வடிவமைத்தனர், இது ஒருமித்த கருத்து அல்காரிதங்களின் பரவலான பயன்பாட்டையும் சரியான செயலாக்கத்தையும் செயல்படுத்தும் நோக்கில் இருந்தது.
ராஃப்டின் முக்கிய வடிவமைப்புத் தத்துவம்: புரிந்துகொள்ளும் தன்மைக்கு முதலிடம்
ராஃப்ட் ஒருமித்த கருத்தின் சிக்கலான சிக்கலை பல ஒப்பீட்டளவில் சுயாதீனமான துணைச் சிக்கல்களாகப் பிரிக்கிறது, ஒவ்வொன்றும் அதன் சொந்த குறிப்பிட்ட விதிகள் மற்றும் நடத்தைகளைக் கொண்டுள்ளன. இந்த மட்டுப்படுத்தல் புரிந்துகொள்ளுதலுக்கு கணிசமாக உதவுகிறது. முக்கிய வடிவமைப்பு கோட்பாடுகள் பின்வருமாறு:
- தலைவரை மையமாகக் கொண்ட அணுகுமுறை (Leader-Centric Approach): அனைத்து கணுக்களும் முடிவெடுப்பதில் சமமாகப் பங்கேற்கும் சில ஒருமித்த கருத்து அல்காரிதங்களைப் போலல்லாமல், ராஃப்ட் ஒரு தனி தலைவரைக் குறிப்பிடுகிறது. தலைவர் பிரதிபலிப்புப் பதிவை நிர்வகிப்பதற்கும் அனைத்து வாடிக்கையாளர் கோரிக்கைகளையும் ஒருங்கிணைப்பதற்கும் பொறுப்பாவார். இது பதிவு நிர்வாகத்தை எளிதாக்குகிறது மற்றும் கணுக்களுக்கு இடையிலான தொடர்புகளின் சிக்கலைக் குறைக்கிறது.
- வலுவான தலைவர் (Strong Leader): புதிய பதிவு உள்ளீடுகளை முன்மொழிவதற்கும் அவை எப்போது உறுதிசெய்யப்படுகின்றன என்பதைத் தீர்மானிப்பதற்கும் தலைவரே இறுதி அதிகாரம் ஆவார். பின்தொடர்பவர்கள் தலைவரின் பதிவை செயலற்ற முறையில் பிரதிபலிக்கின்றனர் மற்றும் தலைவரின் கோரிக்கைகளுக்கு பதிலளிக்கின்றனர்.
- நிர்ணயிக்கப்பட்ட தேர்தல்கள் (Deterministic Elections): ஒரு குறிப்பிட்ட தேர்தல் காலத்தில் பொதுவாக ஒரே ஒரு வேட்பாளர் மட்டுமே தலைவராக வெளிப்படுவதை உறுதிசெய்ய ராஃப்ட் ஒரு சீரற்ற தேர்தல் காலக்கெடுவைப் பயன்படுத்துகிறது.
- பதிவு நிலைத்தன்மை (Log Consistency): ராஃப்ட் அதன் பிரதிபலிப்புப் பதிவில் வலுவான நிலைத்தன்மை பண்புகளைச் செயல்படுத்துகிறது, உறுதிசெய்யப்பட்ட உள்ளீடுகள் ஒருபோதும் பின்வாங்கப்படாது என்பதையும், அனைத்து உறுதிசெய்யப்பட்ட உள்ளீடுகளும் இறுதியில் கிடைக்கக்கூடிய அனைத்து கணுக்களிலும் தோன்றும் என்பதையும் உறுதி செய்கிறது.
Paxos உடன் ஒரு சுருக்கமான ஒப்பீடு
ராஃப்டுக்கு முன்பு, பரவலாக்கப்பட்ட ஒருமித்த கருத்துக்கான நடைமுறைத் தரமாக Paxos இருந்தது. சக்திவாய்ந்ததாக இருந்தாலும், Paxos-ஐப் புரிந்துகொள்வதும் சரியாகச் செயல்படுத்துவதும் மிகவும் கடினமானது. அதன் வடிவமைப்பு, பாத்திரங்களைப் பிரிப்பது (முன்மொழிபவர், ஏற்பவர், கற்பவர்) மற்றும் பல தலைவர்கள் ஒரே நேரத்தில் இருக்க அனுமதிப்பது (ஒரே ஒருவரால் மட்டுமே ஒரு மதிப்பை உறுதிசெய்ய முடியும் என்றாலும்), சிக்கலான தொடர்புகளுக்கும் விளிம்பு நிலைமைகளுக்கும் வழிவகுக்கும்.
இதற்கு மாறாக, ராஃப்ட் நிலைகளின் பரப்பை எளிதாக்குகிறது. இது ஒரு வலுவான தலைவர் மாதிரியைச் செயல்படுத்துகிறது, அங்கு அனைத்து பதிவு மாற்றங்களுக்கும் தலைவரே பொறுப்பாவார். இது பாத்திரங்களை (தலைவர், பின்தொடர்பவர், வேட்பாளர்) மற்றும் அவற்றுக்கிடையேயான மாற்றங்களைத் தெளிவாக வரையறுக்கிறது. இந்த கட்டமைப்பு ராஃப்டின் நடத்தையை மேலும் உள்ளுணர்வுடனும் எளிதாக பகுத்தறியக்கூடியதாகவும் ஆக்குகிறது, இது குறைவான செயலாக்கப் பிழைகளுக்கும் வேகமான மேம்பாட்டுச் சுழற்சிகளுக்கும் வழிவகுக்கிறது. ஆரம்பத்தில் Paxos உடன் போராடிய பல நிஜ உலக அமைப்புகள் ராஃப்டை ஏற்றுக்கொள்வதன் மூலம் வெற்றியைக் கண்டறிந்துள்ளன.
ராஃப்டில் உள்ள மூன்று அடிப்படைப் பாத்திரங்கள்
எந்தவொரு நேரத்திலும், ஒரு ராஃப்ட் கிளஸ்டரில் உள்ள ஒவ்வொரு சேவையகமும் மூன்று நிலைகளில் ஒன்றில் இருக்கும்: தலைவர் (Leader), பின்தொடர்பவர் (Follower), அல்லது வேட்பாளர் (Candidate). இந்தப் பாத்திரங்கள் பிரத்தியேகமானவை மற்றும் மாறும் தன்மையுடையவை, சேவையகங்கள் குறிப்பிட்ட விதிகள் மற்றும் நிகழ்வுகளின் அடிப்படையில் அவற்றுக்கிடையே மாறுகின்றன.
1. பின்தொடர்பவர்
- செயலற்ற பாத்திரம் (Passive Role): பின்தொடர்பவர்கள் ராஃப்டில் மிகவும் செயலற்ற நிலையில் உள்ளனர். அவர்கள் தலைவர்கள் மற்றும் வேட்பாளர்களிடமிருந்து வரும் கோரிக்கைகளுக்கு மட்டுமே பதிலளிக்கிறார்கள்.
-
இதயத் துடிப்புகளைப் பெறுதல் (Receiving Heartbeats): ஒரு பின்தொடர்பவர் தலைவரிடமிருந்து சீரான இடைவெளியில் இதயத் துடிப்புகளை (வெற்று AppendEntries RPCs) பெற எதிர்பார்க்கிறார். ஒரு பின்தொடர்பவர் ஒரு குறிப்பிட்ட
தேர்தல் காலக்கெடு (election timeout)காலத்திற்குள் ஒரு இதயத் துடிப்பையோ அல்லது AppendEntries RPC-ஐயோ பெறவில்லை என்றால், அது தலைவர் தோல்வியடைந்துவிட்டதாகக் கருதி ஒரு வேட்பாளர் நிலைக்கு மாறுகிறது. - வாக்களித்தல் (Voting): ஒரு தேர்தலின் போது, ஒரு பின்தொடர்பவர் ஒரு காலத்திற்கு (term) அதிகபட்சம் ஒரு வேட்பாளருக்கு மட்டுமே வாக்களிப்பார்.
- பதிவுப் பிரதிபலிப்பு (Log Replication): பின்தொடர்பவர்கள் தலைவரின் அறிவுறுத்தலின்படி தங்கள் உள்ளூர் பதிவில் பதிவு உள்ளீடுகளைச் சேர்க்கிறார்கள்.
2. வேட்பாளர்
- தேர்தல்களைத் தொடங்குதல் (Initiating Elections): ஒரு பின்தொடர்பவர் காலாவதியானால் (தலைவரிடமிருந்து தகவல் வராவிட்டால்), அது ஒரு புதிய தேர்தலைத் தொடங்க வேட்பாளர் நிலைக்கு மாறுகிறது.
-
சுய-வாக்களித்தல் (Self-Voting): ஒரு வேட்பாளர் அதன்
தற்போதைய காலத்தை (current term)அதிகரித்து, தனக்கே வாக்களித்து, கிளஸ்டரில் உள்ள மற்ற அனைத்து சேவையகங்களுக்கும்RequestVoteRPC-களை அனுப்புகிறது. - ஒரு தேர்தலில் வெற்றி பெறுதல் (Winning an Election): ஒரு வேட்பாளர் கிளஸ்டரில் உள்ள பெரும்பான்மையான சேவையகங்களிலிருந்து ஒரே காலத்திற்கு வாக்குகளைப் பெற்றால், அது தலைவர் நிலைக்கு மாறுகிறது.
- பின்வாங்குதல் (Stepping Down): ஒரு வேட்பாளர் அதிக காலம் கொண்ட மற்றொரு சேவையகத்தைக் கண்டறிந்தால், அல்லது அது ஒரு முறையான தலைவரிடமிருந்து AppendEntries RPC-ஐப் பெற்றால், அது ஒரு பின்தொடர்பவர் நிலைக்குத் திரும்புகிறது.
3. தலைவர்
- ஒரே அதிகாரம் (Sole Authority): எந்தவொரு நேரத்திலும் (ஒரு குறிப்பிட்ட காலத்திற்கு) ஒரு ராஃப்ட் கிளஸ்டரில் ஒரே ஒரு தலைவர் மட்டுமே ఉంటார். தலைவர் அனைத்து வாடிக்கையாளர் தொடர்புகள், பதிவுப் பிரதிபலிப்பு மற்றும் நிலைத்தன்மையை உறுதி செய்வதற்குப் பொறுப்பாவார்.
-
இதயத் துடிப்புகளை அனுப்புதல் (Sending Heartbeats): தலைவர் தனது அதிகாரத்தை நிலைநிறுத்தவும் புதிய தேர்தல்களைத் தடுக்கவும் அவ்வப்போது அனைத்து பின்தொடர்பவர்களுக்கும்
AppendEntriesRPC-களை (இதயத் துடிப்புகள்) அனுப்புகிறார். - பதிவு மேலாண்மை (Log Management): தலைவர் வாடிக்கையாளர் கோரிக்கைகளை ஏற்று, புதிய பதிவு உள்ளீடுகளைத் தனது உள்ளூர் பதிவில் சேர்த்து, பின்னர் இந்த உள்ளீடுகளை அனைத்து பின்தொடர்பவர்களுக்கும் பிரதிபலிக்கிறார்.
- உறுதிப்படுத்துதல் (Commitment): ஒரு உள்ளீடு பெரும்பான்மையான சேவையகங்களுக்குப் பாதுகாப்பாகப் பிரதிபலிக்கப்பட்டு, நிலை இயந்திரத்தில் உறுதிசெய்யப்படலாம் என்பதைத் தலைவர் தீர்மானிக்கிறார்.
-
பின்வாங்குதல் (Stepping Down): தலைவர் அதிக
காலம் (term)கொண்ட ஒரு சேவையகத்தைக் கண்டறிந்தால், அவர் உடனடியாகப் பதவியில் இருந்து விலகி, ஒரு பின்தொடர்பவராக மாறுகிறார். இது அமைப்பு எப்போதும் அறியப்பட்ட மிக உயர்ந்த காலத்துடன் முன்னேறுவதை உறுதி செய்கிறது.
ராஃப்டின் செயல்பாட்டு நிலைகள்: ஒரு விரிவான வழிகாட்டி
ராஃப்ட் தலைவர் தேர்தல் மற்றும் பதிவுப் பிரதிபலிப்பு ஆகியவற்றின் தொடர்ச்சியான சுழற்சி மூலம் செயல்படுகிறது. இந்த இரண்டு முதன்மை வழிமுறைகளும், முக்கிய பாதுகாப்புப் பண்புகளுடன் சேர்ந்து, கிளஸ்டர் நிலைத்தன்மையையும் பிழை சகிப்புத்தன்மையையும் பராமரிப்பதை உறுதி செய்கின்றன.
1. தலைவர் தேர்தல்
தலைவர் தேர்தல் செயல்முறை ராஃப்டின் செயல்பாட்டிற்கு அடிப்படையானது, கிளஸ்டரில் செயல்களை ஒருங்கிணைக்க எப்போதும் ஒரு ஒற்றை, அதிகாரப்பூர்வமான கணு இருப்பதை உறுதி செய்கிறது.
-
தேர்தல் காலக்கெடு (Election Timeout): ஒவ்வொரு பின்தொடர்பவரும் ஒரு சீரற்ற
தேர்தல் காலக்கெடுவை(பொதுவாக 150-300ms) பராமரிக்கிறார். ஒரு பின்தொடர்பவர் இந்த காலக்கெடுவிற்குள் தற்போதைய தலைவரிடமிருந்து எந்தவொரு தகவல்தொடர்பையும் (இதயத் துடிப்பு அல்லது AppendEntries RPC) பெறவில்லை என்றால், அது தலைவர் தோல்வியடைந்துவிட்டதாகவோ அல்லது ஒரு நெட்வொர்க் பிரிவினை ஏற்பட்டுள்ளதாகவோ கருதுகிறது. -
வேட்பாளர் நிலைக்கு மாற்றம் (Transition to Candidate): காலக்கெடு முடிந்ததும், பின்தொடர்பவர்
வேட்பாளர்நிலைக்கு மாறுகிறார். அது தனதுதற்போதைய காலத்தை (current term)அதிகரித்து, தனக்கே வாக்களித்து, தனது தேர்தல் டைமரை மீட்டமைக்கிறது. -
RequestVote RPC: பின்னர் வேட்பாளர் கிளஸ்டரில் உள்ள மற்ற அனைத்து சேவையகங்களுக்கும்
RequestVoteRPC-களை அனுப்புகிறார். இந்த RPC வேட்பாளரின்தற்போதைய காலம், அதன்candidateId, மற்றும் அதன்கடைசி பதிவு குறியீட்டெண் (last log index)மற்றும்கடைசி பதிவு காலம் (last log term)பற்றிய தகவல்களை உள்ளடக்கியது (இது ஏன் பாதுகாப்பிற்கு முக்கியமானது என்பது பற்றி பின்னர்). -
வாக்களிப்பு விதிகள் (Voting Rules): ஒரு சேவையகம் ஒரு வேட்பாளருக்கு வாக்களிக்கும், பின்வரும் நிபந்தனைகள் பூர்த்தி செய்யப்பட்டால்:
-
அதன்
தற்போதைய காலம்வேட்பாளரின் காலத்தை விட குறைவாகவோ அல்லது சமமாகவோ இருக்க வேண்டும். - அது தற்போதைய காலத்தில் மற்றொரு வேட்பாளருக்கு இன்னும் வாக்களிக்கவில்லை.
-
வேட்பாளரின் பதிவு குறைந்தபட்சம் அதன் சொந்தப் பதிவைப் போலவே புதுப்பித்த நிலையில் இருக்க வேண்டும். இது முதலில்
கடைசி பதிவு காலத்தைஒப்பிடுவதன் மூலம் தீர்மானிக்கப்படுகிறது, பின்னர் காலங்கள் ஒரே மாதிரியாக இருந்தால்கடைசி பதிவு குறியீட்டெண்ணைஒப்பிடுவதன் மூலம் தீர்மானிக்கப்படுகிறது. ஒரு வேட்பாளர் "புதுப்பித்த நிலையில்" இருக்கிறார் என்றால், அதன் பதிவில் வாக்காளரின் பதிவில் உள்ள அனைத்து உறுதிசெய்யப்பட்ட உள்ளீடுகளும் இருக்க வேண்டும். இது தேர்தல் கட்டுப்பாடு (election restriction) என்று அழைக்கப்படுகிறது மற்றும் பாதுகாப்பிற்கு மிகவும் முக்கியமானது.
-
அதன்
-
தேர்தலில் வெற்றி (Winning the Election): ஒரு வேட்பாளர் ஒரே காலத்திற்கு கிளஸ்டரில் உள்ள பெரும்பான்மையான சேவையகங்களிலிருந்து வாக்குகளைப் பெற்றால் புதிய தலைவராகிறார். தேர்ந்தெடுக்கப்பட்டவுடன், புதிய தலைவர் உடனடியாக மற்ற அனைத்து சேவையகங்களுக்கும்
AppendEntriesRPC-களை (இதயத் துடிப்புகள்) அனுப்பி தனது அதிகாரத்தை நிறுவி, புதிய தேர்தல்களைத் தடுக்கிறார். - வாக்குகள் பிரிதல் மற்றும் மறு முயற்சிகள் (Split Votes and Retries): பல வேட்பாளர்கள் ஒரே நேரத்தில் தோன்றுவது சாத்தியம், இது எந்த வேட்பாளரும் பெரும்பான்மையைப் பெறாத வாக்குகள் பிரிதலுக்கு வழிவகுக்கிறது. இதைத் தீர்க்க, ஒவ்வொரு வேட்பாளருக்கும் ஒரு சீரற்ற தேர்தல் காலக்கெடு உள்ளது. ஒரு வேட்பாளரின் காலக்கெடு தேர்தலில் வெற்றி பெறாமலோ அல்லது ஒரு புதிய தலைவரிடமிருந்து தகவல் வராமலோ முடிவடைந்தால், அது தனது காலத்தை அதிகரித்து ஒரு புதிய தேர்தலைத் தொடங்குகிறது. இந்த சீரற்றத்தன்மை வாக்குகள் பிரிதல் அரிதாகவும் விரைவாகவும் தீர்க்கப்படுவதை உறுதிசெய்ய உதவுகிறது.
-
உயர்ந்த காலங்களைக் கண்டறிதல் (Discovering Higher Terms): ஒரு வேட்பாளர் (அல்லது எந்தவொரு சேவையகமும்) தனது சொந்த
தற்போதைய காலத்தைவிட உயர்ந்தகாலத்துடன்ஒரு RPC-ஐப் பெற்றால், அது உடனடியாக தனதுதற்போதைய காலத்தைஉயர்ந்த மதிப்பிற்குப் புதுப்பித்து,பின்தொடர்பவர்நிலைக்குத் திரும்புகிறது. இது காலாவதியான தகவல்களைக் கொண்ட ஒரு சேவையகம் தலைவராக முயற்சிப்பதையோ அல்லது ஒரு முறையான தலைவரைத் தொந்தரவு செய்வதையோ தடுக்கிறது.
2. பதிவுப் பிரதிபலிப்பு
ஒரு தலைவர் தேர்ந்தெடுக்கப்பட்டவுடன், அவரது முதன்மைப் பொறுப்பு பிரதிபலிப்புப் பதிவை நிர்வகிப்பதும், கிளஸ்டர் முழுவதும் நிலைத்தன்மையை உறுதி செய்வதுமாகும். இது வாடிக்கையாளர் கட்டளைகளை ஏற்றுக்கொள்வது, அவற்றை தனது பதிவில் சேர்ப்பது மற்றும் பின்தொடர்பவர்களுக்குப் பிரதிபலிப்பதை உள்ளடக்கியது.
- வாடிக்கையாளர் கோரிக்கைகள் (Client Requests): அனைத்து வாடிக்கையாளர் கோரிக்கைகளும் (நிலை இயந்திரத்தால் செயல்படுத்தப்பட வேண்டிய கட்டளைகள்) தலைவருக்கு அனுப்பப்படுகின்றன. ஒரு வாடிக்கையாளர் ஒரு பின்தொடர்பவரைத் தொடர்பு கொண்டால், பின்தொடர்பவர் அந்தக் கோரிக்கையை தற்போதைய தலைவருக்குத் திருப்பி விடுகிறார்.
-
தலைவரின் பதிவில் சேர்த்தல் (Appending to Leader's Log): தலைவர் ஒரு வாடிக்கையாளர் கட்டளையைப் பெறும்போது, அவர் அந்தக் கட்டளையை ஒரு புதிய
பதிவு உள்ளீடாக (log entry)தனது உள்ளூர் பதிவில் சேர்க்கிறார். ஒவ்வொரு பதிவு உள்ளீடும் கட்டளையையே, அது பெறப்பட்டகாலம், மற்றும் அதன்பதிவு குறியீட்டெண் (log index)ஆகியவற்றைக் கொண்டுள்ளது. -
AppendEntries RPC: பின்னர் தலைவர் அனைத்து பின்தொடர்பவர்களுக்கும்
AppendEntriesRPC-களை அனுப்பி, புதிய பதிவு உள்ளீட்டை (அல்லது ஒரு தொகுதி உள்ளீடுகளை) தங்கள் பதிவுகளில் சேர்க்கும்படி கோருகிறார். இந்த RPC-கள் பின்வருவனவற்றை உள்ளடக்கியது:-
term: தலைவரின் தற்போதைய காலம். -
leaderId: தலைவரின் ஐடி (பின்தொடர்பவர்கள் வாடிக்கையாளர்களைத் திருப்பிவிட). -
prevLogIndex: புதிய உள்ளீடுகளுக்கு உடனடியாக முந்தைய பதிவு உள்ளீட்டின் குறியீட்டெண். -
prevLogTerm:prevLogIndexஉள்ளீட்டின் காலம். இந்த இரண்டும் (prevLogIndex,prevLogTerm) பதிவுப் பொருத்துதல் பண்பிற்கு (log matching property) முக்கியமானவை. -
entries[]: சேமிக்க வேண்டிய பதிவு உள்ளீடுகள் (இதயத் துடிப்புகளுக்கு காலியாக இருக்கும்). -
leaderCommit: தலைவரின்commitIndex(உறுதிசெய்யப்பட்டதாக அறியப்பட்ட மிக உயர்ந்த பதிவு உள்ளீட்டின் குறியீட்டெண்).
-
-
நிலைத்தன்மை சரிபார்ப்பு (பதிவுப் பொருத்துதல் பண்பு): ஒரு பின்தொடர்பவர் ஒரு
AppendEntriesRPC-ஐப் பெறும்போது, அது ஒரு நிலைத்தன்மை சரிபார்ப்பைச் செய்கிறது. அதுprevLogIndexஇல்prevLogTermஉடன் பொருந்தக்கூடிய ஒரு உள்ளீடு அதன் பதிவில் உள்ளதா என்பதைச் சரிபார்க்கிறது. இந்தச் சரிபார்ப்பு தோல்வியுற்றால், பின்தொடர்பவர்AppendEntriesRPC-ஐ நிராகரிக்கிறது, தலைவருக்கு அதன் பதிவு சீரற்றதாக உள்ளது என்பதைத் தெரிவிக்கிறது. -
சீரற்றத்தன்மைகளைத் தீர்த்தல்: ஒரு பின்தொடர்பவர் ஒரு
AppendEntriesRPC-ஐ நிராகரித்தால், தலைவர் அந்தப் பின்தொடர்பவருக்கானnextIndexஐக் குறைத்து,AppendEntriesRPC-ஐ மீண்டும் முயற்சிக்கிறார்.nextIndexஎன்பது தலைவர் ஒரு குறிப்பிட்ட பின்தொடர்பவருக்கு அனுப்பும் அடுத்த பதிவு உள்ளீட்டின் குறியீட்டெண் ஆகும். இந்தச் செயல்முறை தலைவர் மற்றும் பின்தொடர்பவரின் பதிவுகள் பொருந்தும் வரை தொடர்கிறது. ஒரு பொருத்தம் கண்டறியப்பட்டவுடன், பின்தொடர்பவர் அடுத்தடுத்த பதிவு உள்ளீடுகளை ஏற்கலாம், இறுதியில் அதன் பதிவை தலைவரின் பதிவோடு சீரமைக்கிறது. -
உள்ளீடுகளை உறுதிப்படுத்துதல் (Committing Entries): தலைவர் அதை பெரும்பான்மையான சேவையகங்களுக்கு (தன்னையும் சேர்த்து) வெற்றிகரமாகப் பிரதிபலிக்கும்போது ஒரு உள்ளீடு உறுதிசெய்யப்பட்டதாக (committed) கருதப்படுகிறது. உறுதிசெய்யப்பட்டவுடன், அந்த உள்ளீடு உள்ளூர் நிலை இயந்திரத்தில் பயன்படுத்தப்படலாம். தலைவர் தனது
commitIndex-ஐப் புதுப்பித்து, அடுத்தடுத்தAppendEntriesRPC-களில் இதைச் சேர்த்து, பின்தொடர்பவர்களுக்கு உறுதிசெய்யப்பட்ட உள்ளீடுகளைப் பற்றித் தெரிவிக்கிறார். பின்தொடர்பவர்கள் தலைவரின்leaderCommitஅடிப்படையில் தங்கள்commitIndex-ஐப் புதுப்பித்து, அந்த குறியீட்டெண் வரை உள்ள உள்ளீடுகளை தங்கள் நிலை இயந்திரத்தில் பயன்படுத்துகின்றனர். - தலைவர் முழுமைப் பண்பு (Leader Completeness Property): ஒரு குறிப்பிட்ட காலத்தில் ஒரு பதிவு உள்ளீடு உறுதிசெய்யப்பட்டால், அடுத்தடுத்த அனைத்து தலைவர்களும் அந்தப் பதிவு உள்ளீட்டைக் கொண்டிருக்க வேண்டும் என்று ராஃப்ட் உத்தரவாதம் அளிக்கிறது. இந்த பண்பு தேர்தல் கட்டுப்பாட்டால் செயல்படுத்தப்படுகிறது: ஒரு வேட்பாளர் பெரும்பான்மையான மற்ற சேவையகங்களைப் போலவே குறைந்தபட்சம் புதுப்பித்த பதிவைக் கொண்டிருந்தால் மட்டுமே தேர்தலில் வெற்றி பெற முடியும். இது ஒரு தலைவர் தேர்ந்தெடுக்கப்பட்டு உறுதிசெய்யப்பட்ட உள்ளீடுகளை மேலெழுதவோ அல்லது தவறவிடவோ செய்வதைத் தடுக்கிறது.
3. பாதுகாப்புப் பண்புகள் மற்றும் உத்தரவாதங்கள்
ராஃப்டின் வலிமை பல கவனமாக வடிவமைக்கப்பட்ட பாதுகாப்புப் பண்புகளிலிருந்து வருகிறது, அவை சீரற்றத்தன்மைகளைத் தடுக்கின்றன மற்றும் தரவு ஒருமைப்பாட்டை உறுதி செய்கின்றன:
- தேர்தல் பாதுகாப்பு (Election Safety): ஒரு குறிப்பிட்ட காலத்தில் அதிகபட்சம் ஒரு தலைவர் மட்டுமே தேர்ந்தெடுக்கப்பட முடியும். இது வாக்களிப்பு வழிமுறையால் செயல்படுத்தப்படுகிறது, அங்கு ஒரு பின்தொடர்பவர் ஒரு காலத்திற்கு அதிகபட்சம் ஒரு வாக்கை வழங்குகிறார் மற்றும் ஒரு வேட்பாளருக்கு பெரும்பான்மையான வாக்குகள் தேவை.
- தலைவர் முழுமை (Leader Completeness): ஒரு குறிப்பிட்ட காலத்தில் ஒரு பதிவு உள்ளீடு உறுதிசெய்யப்பட்டிருந்தால், அந்த உள்ளீடு அடுத்தடுத்த அனைத்து தலைவர்களின் பதிவுகளிலும் இருக்கும். இது உறுதிசெய்யப்பட்ட தரவு இழப்பைத் தடுப்பதற்கும், முதன்மையாக தேர்தல் கட்டுப்பாட்டால் உறுதி செய்யப்படுவதற்கும் முக்கியமானது.
- பதிவுப் பொருத்துதல் பண்பு (Log Matching Property): இரண்டு பதிவுகள் ஒரே குறியீட்டெண் மற்றும் காலத்துடன் ஒரு உள்ளீட்டைக் கொண்டிருந்தால், அந்தப் பதிவுகள் முந்தைய அனைத்து உள்ளீடுகளிலும் ஒரே மாதிரியாக இருக்கும். இது பதிவு நிலைத்தன்மை சரிபார்ப்புகளை எளிதாக்குகிறது மற்றும் தலைவர் பின்தொடர்பவர்களின் பதிவுகளை திறமையாகப் புதுப்பிக்க அனுமதிக்கிறது.
- உறுதிப்படுத்துதல் பாதுகாப்பு (Commit Safety): ஒரு உள்ளீடு உறுதிசெய்யப்பட்டவுடன், அது ஒருபோதும் மாற்றியமைக்கப்படவோ அல்லது மேலெழுதப்படவோ மாட்டாது. இது தலைவர் முழுமை மற்றும் பதிவுப் பொருத்துதல் பண்புகளின் நேரடி விளைவாகும். ஒரு உள்ளீடு உறுதிசெய்யப்பட்டவுடன், அது நிரந்தரமாகச் சேமிக்கப்பட்டதாகக் கருதப்படுகிறது.
ராஃப்டில் உள்ள முக்கியக் கருத்துகள் மற்றும் வழிமுறைகள்
பாத்திரங்கள் மற்றும் செயல்பாட்டு நிலைகளுக்கு அப்பால், ராஃப்ட் நிலையை நிர்வகிக்கவும் சரியான தன்மையை உறுதி செய்யவும் பல முக்கியக் கருத்துக்களை நம்பியுள்ளது.
1. காலங்கள் (Terms)
ராஃப்டில் ஒரு காலம் (term) என்பது தொடர்ந்து அதிகரிக்கும் ஒரு முழு எண் ஆகும். இது கிளஸ்டருக்கான ஒரு தர்க்கரீதியான கடிகாரமாகச் செயல்படுகிறது. ஒவ்வொரு காலமும் ஒரு தேர்தலுடன் தொடங்குகிறது, ஒரு தேர்தல் வெற்றிகரமாக இருந்தால், அந்த காலத்திற்கு ஒரு ஒற்றைத் தலைவர் தேர்ந்தெடுக்கப்படுகிறார். காலாவதியான தகவல்களை அடையாளம் காண்பதற்கும், சேவையகங்கள் எப்போதும் மிகச் சமீபத்திய தகவல்களுக்குக் கீழ்ப்படிவதை உறுதி செய்வதற்கும் காலங்கள் முக்கியமானவை:
-
சேவையகங்கள் அனைத்து RPC-களிலும் தங்கள்
தற்போதைய காலத்தை (current term)பரிமாறிக்கொள்கின்றன. -
ஒரு சேவையகம் அதிக
காலம்கொண்ட மற்றொரு சேவையகத்தைக் கண்டறிந்தால், அது தனது சொந்ததற்போதைய காலத்தைப்புதுப்பித்து, ஒருபின்தொடர்பவர்நிலைக்குத் திரும்புகிறது. -
ஒரு வேட்பாளர் அல்லது தலைவர் தனது
காலம்காலாவதியானது (மற்றொரு சேவையகத்தின்காலத்தைவிடக் குறைவானது) என்று கண்டறிந்தால், அது உடனடியாகப் பின்வாங்குகிறது.
2. பதிவு உள்ளீடுகள் (Log Entries)
பதிவு (log) என்பது ராஃப்டின் மையக் கூறாகும். இது உள்ளீடுகளின் வரிசைப்படுத்தப்பட்ட தொடராகும், அங்கு ஒவ்வொரு பதிவு உள்ளீடும் நிலை இயந்திரத்தால் செயல்படுத்தப்பட வேண்டிய ஒரு கட்டளையைக் குறிக்கிறது. ஒவ்வொரு உள்ளீடும் கொண்டுள்ளது:
- கட்டளை (Command): செய்யப்பட வேண்டிய உண்மையான செயல்பாடு (உதாரணமாக, "set x=5", "create user").
- காலம் (Term): தலைவரிடம் உள்ளீடு உருவாக்கப்பட்ட காலம்.
- குறியீட்டெண் (Index): பதிவில் உள்ளீட்டின் நிலை. பதிவு உள்ளீடுகள் குறியீட்டெண் மூலம் கண்டிப்பாக வரிசைப்படுத்தப்பட்டுள்ளன.
பதிவு நீடித்தது, அதாவது வாடிக்கையாளர்களுக்குப் பதிலளிப்பதற்கு முன்பு உள்ளீடுகள் நிலையான சேமிப்பகத்தில் எழுதப்படுகின்றன, இது செயலிழப்புகளின் போது தரவு இழப்பிலிருந்து பாதுகாக்கிறது.
3. நிலை இயந்திரம் (State Machine)
ஒரு ராஃப்ட் கிளஸ்டரில் உள்ள ஒவ்வொரு சேவையகமும் ஒரு நிலை இயந்திரத்தை (state machine) பராமரிக்கிறது. இது உறுதிசெய்யப்பட்ட பதிவு உள்ளீடுகளைச் செயல்படுத்தும் ஒரு பயன்பாட்டுக்குரிய கூறு ஆகும். நிலைத்தன்மையை உறுதிப்படுத்த, நிலை இயந்திரம் நிர்ணயிக்கப்பட்டதாக (deterministic) (ஒரே ஆரம்ப நிலை மற்றும் கட்டளைகளின் வரிசை கொடுக்கப்பட்டால், அது எப்போதும் ஒரே வெளியீடு மற்றும் இறுதி நிலையை உருவாக்குகிறது) மற்றும் ஐடெம்போடென்ட் (idempotent) (ஒரே கட்டளையை பலமுறை பயன்படுத்துவது அதை ஒருமுறை பயன்படுத்துவது போலவே விளைவைக் கொண்டுள்ளது, இது மறு முயற்சிகளைக் கையாள்வதில் உதவுகிறது, இருப்பினும் ராஃப்டின் பதிவு உறுதிப்படுத்துதல் பெரும்பாலும் ஒற்றைப் பயன்பாட்டிற்கு உத்தரவாதம் அளிக்கிறது) ஆக இருக்க வேண்டும்.
4. உறுதிப்படுத்தப்பட்ட குறியீட்டெண் (Commit Index)
commitIndex என்பது உறுதிசெய்யப்பட்டதாக அறியப்பட்ட மிக உயர்ந்த பதிவு உள்ளீட்டின் குறியீட்டெண் ஆகும். இதன் பொருள் அது பெரும்பான்மையான சேவையகங்களுக்குப் பாதுகாப்பாகப் பிரதிபலிக்கப்பட்டுள்ளது மற்றும் நிலை இயந்திரத்தில் பயன்படுத்தப்படலாம். தலைவர்கள் commitIndex-ஐத் தீர்மானிக்கிறார்கள், மற்றும் பின்தொடர்பவர்கள் தலைவரின் AppendEntries RPC-களின் அடிப்படையில் தங்கள் commitIndex-ஐப் புதுப்பிக்கிறார்கள். commitIndex வரையிலான அனைத்து உள்ளீடுகளும் நிரந்தரமானவையாகக் கருதப்படுகின்றன மற்றும் பின்வாங்கப்பட முடியாது.
5. ஸ்னாப்ஷாட்டுகள் (Snapshots)
காலப்போக்கில், பிரதிபலிப்புப் பதிவு மிகவும் பெரியதாக வளரலாம், இது குறிப்பிடத்தக்க வட்டு இடத்தைப் பயன்படுத்தும் மற்றும் பதிவுப் பிரதிபலிப்பு மற்றும் மீட்பை மெதுவாக்கும். ராஃப்ட் இதை ஸ்னாப்ஷாட்டுகள் (snapshots) மூலம் கையாள்கிறது. ஒரு ஸ்னாப்ஷாட் என்பது ஒரு குறிப்பிட்ட நேரத்தில் நிலை இயந்திரத்தின் நிலையின் ஒரு சுருக்கமான பிரதிநிதித்துவம் ஆகும். முழு பதிவையும் வைத்திருப்பதற்குப் பதிலாக, சேவையகங்கள் அவ்வப்போது தங்கள் நிலையை "ஸ்னாப்ஷாட்" எடுத்து, ஸ்னாப்ஷாட் புள்ளி வரையிலான அனைத்து பதிவு உள்ளீடுகளையும் நிராகரித்து, பின்னர் புதிய அல்லது பின்தங்கிய பின்தொடர்பவர்களுக்கு ஸ்னாப்ஷாட்டைப் பிரதிபலிக்கலாம். இந்த செயல்முறை செயல்திறனை கணிசமாக மேம்படுத்துகிறது:
- சுருக்கமான பதிவு (Compact Log): நீடித்த பதிவுத் தரவின் அளவைக் குறைக்கிறது.
- வேகமான மீட்பு (Faster Recovery): புதிய அல்லது செயலிழந்த சேவையகங்கள் முழு பதிவையும் ஆரம்பத்திலிருந்து மீண்டும் இயக்குவதற்குப் பதிலாக ஒரு ஸ்னாப்ஷாட்டைப் பெறலாம்.
-
InstallSnapshot RPC: ராஃப்ட் தலைவரிடமிருந்து பின்தொடர்பவர்களுக்கு ஸ்னாப்ஷாட்டுகளை மாற்ற ஒரு
InstallSnapshotRPC-ஐ வரையறுக்கிறது.
செயல்திறன் மிக்கதாக இருந்தாலும், ஸ்னாப்ஷாட்டிங் செயலாக்கத்தில் சிக்கலைச் சேர்க்கிறது, குறிப்பாக ஒரே நேரத்தில் ஸ்னாப்ஷாட் உருவாக்கம், பதிவு துண்டிப்பு மற்றும் பரிமாற்றத்தை நிர்வகிப்பதில்.
ராஃப்டை செயல்படுத்துதல்: உலகளாவிய வரிசைப்படுத்தலுக்கான நடைமுறைக் கருத்துகள்
ராஃப்டின் நேர்த்தியான வடிவமைப்பை ஒரு வலுவான, உற்பத்திக்குத் தயாரான அமைப்பாக மாற்றுவது, குறிப்பாக உலகளாவிய பார்வையாளர்கள் மற்றும் பல்வேறு உள்கட்டமைப்புகளுக்கு, பல நடைமுறைப் பொறியியல் சவால்களை எதிர்கொள்வதை உள்ளடக்கியது.
1. உலகளாவிய சூழலில் நெட்வொர்க் தாமதம் மற்றும் பிரிவினைகள்
உலகளவில் பரவலாக்கப்பட்ட அமைப்புகளுக்கு, நெட்வொர்க் தாமதம் ஒரு குறிப்பிடத்தக்க காரணியாகும். ஒரு ராஃப்ட் கிளஸ்டருக்கு பொதுவாக ஒரு பதிவு உள்ளீட்டை உறுதிப்படுத்துவதற்கு முன்பு பெரும்பான்மையான கணுக்கள் உடன்பட வேண்டும். கண்டங்கள் முழுவதும் பரவியிருக்கும் ஒரு கிளஸ்டரில், கணுக்களுக்கு இடையிலான தாமதம் நூற்றுக்கணக்கான மில்லி விநாடிகளாக இருக்கலாம். இது நேரடியாகப் பாதிக்கிறது:
- உறுதிப்படுத்துதல் தாமதம் (Commit Latency): ஒரு வாடிக்கையாளர் கோரிக்கை உறுதிசெய்ய எடுக்கும் நேரம், பெரும்பான்மையான பிரதிகளுக்கான மெதுவான நெட்வொர்க் இணைப்பால் தடைபடலாம். படிக்க மட்டும் பயன்படும் பின்தொடர்பவர்கள் (stale reads-க்கு தலைவர் தொடர்பு தேவையில்லை) அல்லது புவியியல் ரீதியாக அறிந்த கோரம் கட்டமைப்பு (உதாரணமாக, ஒரு 5-கணு கிளஸ்டரில் ஒரு பிராந்தியத்தில் 3 கணுக்கள், மற்றொரு பிராந்தியத்தில் 2, இங்கு பெரும்பான்மை ஒரு வேகமான பிராந்தியத்திற்குள் இருக்கலாம்) போன்ற உத்திகள் இதைக் குறைக்கலாம்.
-
தலைவர் தேர்தல் வேகம் (Leader Election Speed): அதிக தாமதம்
RequestVoteRPC-களைத் தாமதப்படுத்தலாம், இது அடிக்கடி வாக்குகள் பிரிதலுக்கோ அல்லது நீண்ட தேர்தல் நேரங்களுக்கோ வழிவகுக்கும். தேர்தல் காலக்கெடுவை സാധാരണ கணுக்களுக்கு இடையிலான தாமதத்தை விட கணிசமாக பெரியதாக சரிசெய்வது முக்கியம். - நெட்வொர்க் பிரிவினைகளைக் கையாளுதல் (Network Partition Handling): நிஜ உலக நெட்வொர்க்குகள் பிரிவினைகளுக்கு ஆளாகின்றன. ராஃப்ட், பெரும்பான்மையான சேவையகங்களைக் கொண்ட பிரிவினை மட்டுமே ஒரு தலைவரைத் தேர்ந்தெடுத்து முன்னேற முடியும் என்பதை உறுதி செய்வதன் மூலம் பிரிவினைகளைச் சரியாகக் கையாள்கிறது. சிறுபான்மைப் பிரிவினை புதிய உள்ளீடுகளை உறுதிப்படுத்த முடியாது, இதனால் பிளவு-மூளை சூழ்நிலைகளைத் தடுக்கிறது. இருப்பினும், உலகளவில் பரவலாக்கப்பட்ட அமைப்பில் நீடித்த பிரிவினைகள் சில பிராந்தியங்களில் கிடைக்காத நிலைக்கு வழிவகுக்கும், இது கோரம் வைப்பது குறித்த கவனமான கட்டமைப்பு முடிவுகளை அவசியமாக்குகிறது.
2. நீடித்த சேமிப்பு மற்றும் நிலைத்தன்மை
ராஃப்டின் சரியான தன்மை அதன் பதிவு மற்றும் நிலையின் நிலைத்தன்மையை பெரிதும் சார்ந்துள்ளது. ஒரு சேவையகம் ஒரு RPC-க்கு பதிலளிப்பதற்கு அல்லது அதன் நிலை இயந்திரத்தில் ஒரு உள்ளீட்டைப் பயன்படுத்துவதற்கு முன்பு, தொடர்புடைய தரவு (பதிவு உள்ளீடுகள், current term, votedFor) நிலையான சேமிப்பகத்தில் எழுதப்பட்டு fsync'd (வட்டில் சேமிக்கப்பட்டது) செய்யப்பட்டுள்ளதா என்பதை உறுதி செய்ய வேண்டும். இது ஒரு செயலிழப்பு ஏற்பட்டால் தரவு இழப்பைத் தடுக்கிறது. கருத்தில் கொள்ள வேண்டியவை:
- செயல்திறன் (Performance): அடிக்கடி வட்டில் எழுதுவது செயல்திறன் தடையாக இருக்கலாம். எழுதுவதை தொகுப்புகளாகச் செய்வதும், உயர் செயல்திறன் கொண்ட SSD-களைப் பயன்படுத்துவதும் பொதுவான மேம்படுத்தல்கள்.
- நம்பகத்தன்மை (Reliability): ஒரு வலுவான மற்றும் நீடித்த சேமிப்பகத் தீர்வைத் தேர்ந்தெடுப்பது (உள்ளூர் வட்டு, நெட்வொர்க்-இணைக்கப்பட்ட சேமிப்பகம், கிளவுட் பிளாக் ஸ்டோரேஜ்) முக்கியமானது.
- WAL (Write-Ahead Log): பெரும்பாலும், ராஃப்ட் செயலாக்கங்கள் தரவுத்தளங்களைப் போலவே, மாற்றங்கள் நினைவகத்தில் பயன்படுத்தப்படுவதற்கு முன்பு வட்டில் எழுதப்படுவதை உறுதிசெய்ய, நிலைத்தன்மைக்காக ஒரு Write-Ahead Log-ஐப் பயன்படுத்துகின்றன.
3. வாடிக்கையாளர் தொடர்பு மற்றும் நிலைத்தன்மை மாதிரிகள்
வாடிக்கையாளர்கள் தலைவருக்கு கோரிக்கைகளை அனுப்புவதன் மூலம் ராஃப்ட் கிளஸ்டருடன் தொடர்பு கொள்கிறார்கள். வாடிக்கையாளர் கோரிக்கைகளைக் கையாள்வது பின்வருவனவற்றை உள்ளடக்கியது:
- தலைவரைக் கண்டறிதல் (Leader Discovery): வாடிக்கையாளர்கள் தற்போதைய தலைவரைக் கண்டுபிடிக்க ஒரு வழிமுறை தேவை. இது ஒரு சேவை கண்டறிதல் வழிமுறை, திருப்பிவிடும் ஒரு நிலையான முனைப்புள்ளி, அல்லது ஒருவர் தலைவராக பதிலளிக்கும் வரை சேவையகங்களை முயற்சிப்பதன் மூலம் இருக்கலாம்.
- கோரிக்கை மறு முயற்சிகள் (Request Retries): தலைவர் மாறினால் அல்லது ஒரு நெட்வொர்க் பிழை ஏற்பட்டால் கோரிக்கைகளை மீண்டும் முயற்சிக்க வாடிக்கையாளர்கள் தயாராக இருக்க வேண்டும்.
-
வாசிப்பு நிலைத்தன்மை (Read Consistency): ராஃப்ட் முதன்மையாக எழுதுதல்களுக்கு வலுவான நிலைத்தன்மைக்கு உத்தரவாதம் அளிக்கிறது. வாசிப்புகளுக்கு, பல மாதிரிகள் சாத்தியம்:
- வலுவான நிலைத்தன்மை கொண்ட வாசிப்புகள் (Strongly Consistent Reads): ஒரு வாசிப்பை வழங்குவதற்கு முன்பு அதன் நிலை புதுப்பித்த நிலையில் உள்ளதா என்பதை உறுதி செய்ய, அதன் பின்தொடர்பவர்களில் பெரும்பான்மையினருக்கு ஒரு இதயத் துடிப்பை அனுப்புமாறு தலைவர் கேட்கலாம். இது புத்துணர்ச்சிக்கு உத்தரவாதம் அளிக்கிறது ஆனால் தாமதத்தைச் சேர்க்கிறது.
- தலைவர்-குத்தகை வாசிப்புகள் (Leader-Lease Reads): தலைவர் ஒரு குறுகிய காலத்திற்கு பெரும்பான்மையான கணுக்களிடமிருந்து ஒரு 'குத்தகையை' பெறலாம், அந்த நேரத்தில் அவர் இன்னும் தலைவர் என்பதை அறிந்து, மேலும் ஒருமித்த கருத்து இல்லாமல் வாசிப்புகளை வழங்க முடியும். இது வேகமானது ஆனால் நேர வரம்புக்குட்பட்டது.
- காலாவதியான வாசிப்புகள் (பின்தொடர்பவர்களிடமிருந்து) (Stale Reads (from Followers)): பின்தொடர்பவர்களிடமிருந்து நேரடியாகப் படிப்பது குறைந்த தாமதத்தை வழங்கலாம், ஆனால் பின்தொடர்பவரின் பதிவு தலைவரை விடப் பின்தங்கியிருந்தால் காலாவதியான தரவைப் படிக்கும் அபாயம் உள்ளது. இது வாசிப்புகளுக்கு இறுதியில் நிலைத்தன்மை போதுமான பயன்பாடுகளுக்கு ஏற்றுக்கொள்ளத்தக்கது.
4. கட்டமைப்பு மாற்றங்கள் (கிளஸ்டர் உறுப்பினர்)
ஒரு ராஃப்ட் கிளஸ்டரின் உறுப்பினர்களை மாற்றுவது (சேவையகங்களைச் சேர்ப்பது அல்லது அகற்றுவது) ஒரு சிக்கலான செயல்பாடு ஆகும், இது சீரற்றத்தன்மைகள் அல்லது பிளவு-மூளை சூழ்நிலைகளைத் தவிர்க்க ஒருமித்த கருத்து மூலம் செய்யப்பட வேண்டும். ராஃப்ட் கூட்டு ஒருமித்த கருத்து (Joint Consensus) என்ற ஒரு நுட்பத்தை முன்மொழிகிறது:
- இரண்டு கட்டமைப்புகள் (Two Configurations): ஒரு கட்டமைப்பு மாற்றத்தின் போது, அமைப்பு தற்காலிகமாக இரண்டு ஒன்றுடன் ஒன்று பொருந்தும் கட்டமைப்புகளுடன் செயல்படுகிறது: பழைய கட்டமைப்பு (C_old) மற்றும் புதிய கட்டமைப்பு (C_new).
- கூட்டு ஒருமித்த கருத்து நிலை (C_old, C_new): தலைவர் கூட்டு கட்டமைப்பைக் குறிக்கும் ஒரு சிறப்புப் பதிவு உள்ளீட்டை முன்மொழிகிறார். இந்த உள்ளீடு உறுதிசெய்யப்பட்டவுடன் (C_old மற்றும் C_new இரண்டிலும் உள்ள பெரும்பான்மையினரின் உடன்பாடு தேவை), அமைப்பு ஒரு இடைநிலை நிலையில் உள்ளது. இப்போது, முடிவுகளுக்கு இரண்டு கட்டமைப்புகளிலிருந்தும் பெரும்பான்மைகள் தேவை. இது மாற்றத்தின் போது, பழைய அல்லது புதிய கட்டமைப்பு தன்னிச்சையாக முடிவுகளை எடுக்க முடியாது என்பதை உறுதி செய்கிறது, இது வேறுபாட்டைத் தடுக்கிறது.
- C_new-க்கு மாற்றம்: கூட்டு கட்டமைப்பு பதிவு உள்ளீடு உறுதிசெய்யப்பட்டவுடன், தலைவர் புதிய கட்டமைப்பை (C_new) மட்டுமே குறிக்கும் மற்றொரு பதிவு உள்ளீட்டை முன்மொழிகிறார். இந்த இரண்டாவது உள்ளீடு உறுதிசெய்யப்பட்டவுடன், பழைய கட்டமைப்பு நிராகரிக்கப்படுகிறது, மற்றும் அமைப்பு C_new-ன் கீழ் மட்டுமே செயல்படுகிறது.
- பாதுகாப்பு (Safety): இந்த இரண்டு-கட்ட உறுதிப்படுத்துதல் போன்ற செயல்முறை எந்த நேரத்திலும் இரண்டு முரண்பாடான தலைவர்கள் தேர்ந்தெடுக்கப்பட முடியாது (ஒருவர் C_old-ன் கீழ், மற்றொருவர் C_new-ன் கீழ்) என்பதையும், மாற்றத்தின் போது அமைப்பு தொடர்ந்து செயல்படுவதையும் உறுதி செய்கிறது.
இடைநிலை நிலையில் உள்ள எண்ணற்ற விளிம்பு நிலைகள் மற்றும் தோல்விச் சூழ்நிலைகள் காரணமாக, கட்டமைப்பு மாற்றங்களைச் சரியாகச் செயல்படுத்துவது ஒரு ராஃப்ட் செயலாக்கத்தின் மிகவும் சவாலான பகுதிகளில் ஒன்றாகும்.
5. பரவலாக்கப்பட்ட அமைப்புகளைச் சோதித்தல்: ஒரு கடுமையான அணுகுமுறை
ராஃப்ட் போன்ற ஒரு பரவலாக்கப்பட்ட ஒருமித்த கருத்து அல்காரிதத்தைச் சோதிப்பது அதன் நிர்ணயிக்கப்படாத தன்மை மற்றும் பலவிதமான தோல்வி முறைகள் காரணமாக விதிவிலக்காக சவாலானது. எளிய அலகு சோதனைகள் போதுமானவை அல்ல. கடுமையான சோதனைகள் பின்வருவனவற்றை உள்ளடக்கியது:
- பிழை உட்செலுத்துதல் (Fault Injection): கணு செயலிழப்புகள், நெட்வொர்க் பிரிவினைகள், செய்தி தாமதங்கள் மற்றும் செய்தி வரிசைமாற்றம் போன்ற தோல்விகளை முறையாக அறிமுகப்படுத்துதல். Jepsen போன்ற கருவிகள் குறிப்பாக இந்த நோக்கத்திற்காக வடிவமைக்கப்பட்டுள்ளன.
- பண்பு அடிப்படையிலான சோதனை (Property-Based Testing): மாறாதவை மற்றும் பாதுகாப்புப் பண்புகளை (உதாரணமாக, ஒரு காலத்திற்கு அதிகபட்சம் ஒரு தலைவர், உறுதிசெய்யப்பட்ட உள்ளீடுகள் ஒருபோதும் இழக்கப்படாது) வரையறுத்து, பல்வேறு நிலைமைகளின் கீழ் செயலாக்கம் இவற்றைப் பராமரிக்கிறதா என்பதைச் சோதித்தல்.
- மாதிரி சரிபார்ப்பு (Model Checking): அல்காரிதத்தின் முக்கியமான பகுதிகளுக்கு, சரியான தன்மையை நிரூபிக்க முறையான சரிபார்ப்பு நுட்பங்களைப் பயன்படுத்தலாம், இருப்பினும் இது மிகவும் சிறப்பு வாய்ந்தது.
- உருவகப்படுத்தப்பட்ட சூழல்கள் (Simulated Environments): உலகளாவிய வரிசைப்படுத்தல்களின் பொதுவான நெட்வொர்க் நிலைமைகளை (தாமதம், பாக்கெட் இழப்பு) உருவகப்படுத்தும் சூழல்களில் சோதனைகளை இயக்குதல்.
பயன்பாட்டு நிகழ்வுகள் மற்றும் நிஜ உலகப் பயன்பாடுகள்
ராஃப்டின் நடைமுறைத்தன்மை மற்றும் புரிந்துகொள்ளும் தன்மை ஆகியவை பல்வேறு முக்கியமான உள்கட்டமைப்புக் கூறுகளில் அதன் பரவலான பயன்பாட்டிற்கு வழிவகுத்தன:
1. பரவலாக்கப்பட்ட விசை-மதிப்பு கடைகள் மற்றும் தரவுத்தளப் பிரதிபலிப்பு
- etcd: Kubernetes-இன் ஒரு அடிப்படைக் கூறு, etcd கட்டமைப்புத் தரவைச் சேமிக்கவும் பிரதிபலிக்கவும், சேவை கண்டறிதல் தகவல்களை நிர்வகிக்கவும், கிளஸ்டரின் நிலையை நிர்வகிக்கவும் ராஃப்டைப் பயன்படுத்துகிறது. Kubernetes சரியாகச் செயல்பட அதன் நம்பகத்தன்மை முதன்மையானது.
- Consul: HashiCorp ஆல் உருவாக்கப்பட்டது, Consul அதன் பரவலாக்கப்பட்ட சேமிப்பகப் பின்தளத்திற்கு ராஃப்டைப் பயன்படுத்துகிறது, இது டைனமிக் உள்கட்டமைப்புச் சூழல்களில் சேவை கண்டறிதல், சுகாதாரச் சரிபார்ப்பு மற்றும் கட்டமைப்பு நிர்வாகத்தை செயல்படுத்துகிறது.
- TiKV: TiDB (ஒரு பரவலாக்கப்பட்ட SQL தரவுத்தளம்) பயன்படுத்தும் பரவலாக்கப்பட்ட பரிவர்த்தனை விசை-மதிப்புக் கடை, அதன் தரவுப் பிரதிபலிப்பு மற்றும் நிலைத்தன்மை உத்தரவாதங்களுக்காக ராஃப்டை செயல்படுத்துகிறது.
- CockroachDB: இந்த உலகளவில் பரவலாக்கப்பட்ட SQL தரவுத்தளம் பல கணுக்கள் மற்றும் புவியியல் முழுவதும் தரவைப் பிரதிபலிக்கவும், பிராந்தியம் தழுவிய தோல்விகளின் போதும் உயர் கிடைக்கும் தன்மை மற்றும் வலுவான நிலைத்தன்மையை உறுதி செய்யவும் ராஃப்டை விரிவாகப் பயன்படுத்துகிறது.
2. சேவை கண்டறிதல் மற்றும் கட்டமைப்பு மேலாண்மை
ஒரு கிளஸ்டர் முழுவதும் சேவைகள் மற்றும் கட்டமைப்புகள் பற்றிய முக்கியமான மெட்டாடேட்டாவைச் சேமித்து விநியோகிக்க வேண்டிய அமைப்புகளுக்கு ராஃப்ட் ஒரு சிறந்த அடித்தளத்தை வழங்குகிறது. ஒரு சேவை பதிவுசெய்யப்படும்போது அல்லது அதன் கட்டமைப்பு மாறும்போது, அனைத்து கணுக்களும் இறுதியில் புதிய நிலையில் உடன்படுவதை ராஃப்ட் உறுதிசெய்கிறது, இது கைமுறை தலையீடு இல்லாமல் டைனமிக் புதுப்பிப்புகளைச் செயல்படுத்துகிறது.
3. பரவலாக்கப்பட்ட பரிவர்த்தனை ஒருங்கிணைப்பாளர்கள்
பல செயல்பாடுகள் அல்லது சேவைகள் முழுவதும் அணுத்தன்மை தேவைப்படும் அமைப்புகளுக்கு, ராஃப்ட் பரவலாக்கப்பட்ட பரிவர்த்தனை ஒருங்கிணைப்பாளர்களுக்கு அடித்தளமாக அமையலாம், இது பங்கேற்பாளர்கள் முழுவதும் மாற்றங்களை உறுதிசெய்வதற்கு முன்பு பரிவர்த்தனைப் பதிவுகள் சீராகப் பிரதிபலிக்கப்படுவதை உறுதி செய்கிறது.
4. பிற அமைப்புகளில் கிளஸ்டர் ஒருங்கிணைப்பு மற்றும் தலைவர் தேர்தல்
வெளிப்படையான தரவுத்தளம் அல்லது விசை-மதிப்புக் கடை பயன்பாட்டிற்கு அப்பால், ராஃப்ட் பெரும்பாலும் ஒருங்கிணைப்புப் பணிகளை நிர்வகிக்க, பிற பரவலாக்கப்பட்ட செயல்முறைகளுக்குத் தலைவர்களைத் தேர்ந்தெடுக்க, அல்லது பெரிய அமைப்புகளில் ஒரு நம்பகமான கட்டுப்பாட்டுத் தளத்தை வழங்க ஒரு நூலகமாக அல்லது மையக் கூறாக உட்பொதிக்கப்படுகிறது. உதாரணமாக, பல கிளவுட்-நேட்டிவ் தீர்வுகள் தங்கள் கட்டுப்பாட்டுத் தளக் கூறுகளின் நிலையை நிர்வகிக்க ராஃப்டைப் பயன்படுத்துகின்றன.
ராஃப்டின் நன்மைகள் மற்றும் தீமைகள்
ராஃப்ட் குறிப்பிடத்தக்க நன்மைகளை வழங்கினாலும், அதன் வர்த்தகப் பரிமாற்றங்களைப் புரிந்துகொள்வது அவசியம்.
நன்மைகள்:
- புரிந்துகொள்ளும் தன்மை: அதன் முதன்மை வடிவமைப்பு இலக்கு, இது Paxos போன்ற பழைய ஒருமித்த கருத்து அல்காரிதங்களை விடச் செயல்படுத்துவதற்கும், பிழைதிருத்தம் செய்வதற்கும், பகுத்தறிவதற்கும் எளிதாக்குகிறது.
- வலுவான நிலைத்தன்மை: உறுதிசெய்யப்பட்ட பதிவு உள்ளீடுகளுக்கு வலுவான நிலைத்தன்மை உத்தரவாதங்களை வழங்குகிறது, தரவு ஒருமைப்பாடு மற்றும் நம்பகத்தன்மையை உறுதி செய்கிறது.
-
பிழை சகிப்புத்தன்மை: ஒரு
N-கணு கிளஸ்டரில் சிறுபான்மையான கணுக்களின் தோல்வியை ((N-1)/2தோல்விகள் வரை) கிடைக்கும் தன்மை அல்லது நிலைத்தன்மையை இழக்காமல் தாங்க முடியும். - செயல்திறன்: நிலையான நிலைமைகளில் (தலைவர் மாற்றங்கள் இல்லை), ராஃப்ட் உயர் செயல்திறனை அடைய முடியும், ஏனெனில் தலைவர் அனைத்து கோரிக்கைகளையும் வரிசையாகச் செயல்படுத்தி இணையாகப் பிரதிபலிக்கிறார், இது நெட்வொர்க் அலைவரிசையைத் திறமையாகப் பயன்படுத்துகிறது.
- நன்கு வரையறுக்கப்பட்ட பாத்திரங்கள்: தெளிவான பாத்திரங்கள் (தலைவர், பின்தொடர்பவர், வேட்பாளர்) மற்றும் நிலை மாற்றங்கள் மன மாதிரி மற்றும் செயலாக்கத்தை எளிதாக்குகின்றன.
- கட்டமைப்பு மாற்றங்கள்: கிளஸ்டரிலிருந்து கணுக்களைப் பாதுகாப்பாகச் சேர்க்க அல்லது அகற்ற, நிலைத்தன்மையை சமரசம் செய்யாமல் ஒரு வலுவான வழிமுறையை (கூட்டு ஒருமித்த கருத்து) வழங்குகிறது.
தீமைகள்:
- தலைவர் தடைக்கட்டு (Leader Bottleneck): அனைத்து வாடிக்கையாளர் எழுதுதல் கோரிக்கைகளும் தலைவர் வழியாகச் செல்ல வேண்டும். மிக அதிக எழுதுதல் செயல்திறன் கொண்ட சூழ்நிலைகளில் அல்லது தலைவர்கள் வாடிக்கையாளர்களிடமிருந்து புவியியல் ரீதியாக தொலைவில் இருக்கும்போது, இது ஒரு செயல்திறன் தடைக்கட்டாக மாறும்.
- வாசிப்புத் தாமதம் (Read Latency): வலுவான நிலைத்தன்மை கொண்ட வாசிப்புகளை அடைவதற்கு பெரும்பாலும் தலைவருடனான தொடர்பு தேவைப்படுகிறது, இது தாமதத்தைச் சேர்க்கலாம். பின்தொடர்பவர்களிடமிருந்து படிப்பது காலாவதியான தரவைப் படிக்கும் அபாயத்தைக் கொண்டுள்ளது.
- கோரம் தேவை (Quorum Requirement): புதிய உள்ளீடுகளை உறுதிப்படுத்த பெரும்பான்மையான கணுக்கள் கிடைக்க வேண்டும். ஒரு 5-கணு கிளஸ்டரில், 2 தோல்விகள் தாங்கக்கூடியவை. 3 கணுக்கள் தோல்வியுற்றால், கிளஸ்டர் எழுதுதல்களுக்கு கிடைக்காது. இது மிகவும் பிரிக்கப்பட்ட அல்லது புவியியல் ரீதியாகப் பரவியுள்ள சூழல்களில் சவாலாக இருக்கலாம், அங்கு பிராந்தியங்கள் முழுவதும் பெரும்பான்மையைப் பராமரிப்பது கடினம்.
- நெட்வொர்க் உணர்திறன் (Network Sensitivity): நெட்வொர்க் தாமதம் மற்றும் பிரிவினைகளுக்கு மிகவும் உணர்திறன் கொண்டது, இது தேர்தல் நேரங்களையும் ஒட்டுமொத்த கணினி செயல்திறனையும் பாதிக்கலாம், குறிப்பாக பரவலாகப் பரவியுள்ள வரிசைப்படுத்தல்களில்.
- கட்டமைப்பு மாற்றங்களின் சிக்கல்: வலுவானதாக இருந்தாலும், கூட்டு ஒருமித்த கருத்து வழிமுறை ராஃப்ட் அல்காரிதத்தின் மிகவும் சிக்கலான பகுதிகளில் ஒன்றாகும், அதைச் சரியாகச் செயல்படுத்தவும் முழுமையாகச் சோதிக்கவும் வேண்டும்.
- ஒற்றைத் தோல்விப் புள்ளி (எழுதுதல்களுக்கு): தலைவர் தோல்விக்கு பிழை சகிப்புத்தன்மை கொண்டதாக இருந்தாலும், தலைவர் நிரந்தரமாகச் செயலிழந்து, ஒரு புதிய தலைவரைத் தேர்ந்தெடுக்க முடியாவிட்டால் (உதாரணமாக, நெட்வொர்க் பிரிவினைகள் அல்லது அதிக தோல்விகள் காரணமாக), கணினி எழுதுதல்களில் முன்னேற முடியாது.
முடிவுரை: மீள்திறன் கொண்ட உலகளாவிய அமைப்புகளுக்கு பரவலாக்கப்பட்ட ஒருமித்த கருத்தில் தேர்ச்சி பெறுதல்
ராஃப்ட் அல்காரிதம் சிக்கலான சிக்கல்களை எளிதாக்குவதில் சிந்தனைமிக்க வடிவமைப்பின் சக்திக்கு ஒரு சான்றாக நிற்கிறது. அதன் புரிந்துகொள்ளும் தன்மை மீதான அழுத்தம் பரவலாக்கப்பட்ட ஒருமித்த கருத்தை ஜனநாயகப்படுத்தியுள்ளது, இது பரந்த அளவிலான டெவலப்பர்கள் மற்றும் நிறுவனங்கள் முந்தைய அணுகுமுறைகளின் மறைபொருளான சிக்கல்களுக்கு ஆளாகாமல் உயர் கிடைக்கும் தன்மை மற்றும் பிழை சகிப்புத்தன்மை கொண்ட அமைப்புகளை உருவாக்க அனுமதிக்கிறது.
Kubernetes (etcd வழியாக) மூலம் கொள்கலன் கிளஸ்டர்களை ஒருங்கிணைப்பதிலிருந்து CockroachDB போன்ற உலகளாவிய தரவுத்தளங்களுக்கு மீள்திறன் கொண்ட தரவுச் சேமிப்பை வழங்குவது வரை, ராஃப்ட் ஒரு அமைதியான உழைப்பாளி, நமது டிஜிட்டல் உலகம் நிலைத்தன்மையுடனும் செயல்பாட்டுடனும் இருப்பதை உறுதி செய்கிறது. ராஃப்டை செயல்படுத்துவது ஒரு அற்பமான முயற்சி அல்ல, ஆனால் அதன் விவரக்குறிப்பின் தெளிவும், அதன் சுற்றியுள்ள சுற்றுச்சூழல் அமைப்பின் செழுமையும், அடுத்த தலைமுறை வலுவான, அளவிடக்கூடிய உள்கட்டமைப்பை உருவாக்க உறுதிபூண்டுள்ளவர்களுக்கு இது ஒரு பலனளிக்கும் முயற்சியாக அமைகிறது.
டெவலப்பர்கள் மற்றும் கட்டிடக் கலைஞர்களுக்கான செயல் நுண்ணறிவுகள்:
- புரிதலுக்கு முன்னுரிமை கொடுங்கள்: ஒரு செயலாக்கத்தை முயற்சிக்கும் முன், ராஃப்டின் ஒவ்வொரு விதி மற்றும் நிலை மாற்றத்தையும் முழுமையாகப் புரிந்துகொள்வதில் நேரத்தைச் செலவிடுங்கள். அசல் ஆய்வுக் கட்டுரை மற்றும் காட்சி விளக்கங்கள் விலைமதிப்பற்ற வளங்கள்.
- இருக்கும் நூலகங்களைப் பயன்படுத்துங்கள்: பெரும்பாலான பயன்பாடுகளுக்கு, புதிதாக உருவாக்குவதை விட, நன்கு சரிபார்க்கப்பட்ட இருக்கும் ராஃப்ட் செயலாக்கங்களைப் (உதாரணமாக, etcd, HashiCorp-இன் ராஃப்ட் நூலகம்) பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள், உங்கள் தேவைகள் மிகவும் சிறப்பு வாய்ந்ததாகவோ அல்லது நீங்கள் கல்வி ஆராய்ச்சி செய்வதாகவோ இல்லாவிட்டால்.
- கடுமையான சோதனை பேச்சுவார்த்தைக்கு அப்பாற்பட்டது: பிழை உட்செலுத்துதல், பண்பு அடிப்படையிலான சோதனை மற்றும் தோல்விச் சூழ்நிலைகளின் விரிவான உருவகப்படுத்துதல் ஆகியவை எந்தவொரு பரவலாக்கப்பட்ட ஒருமித்த கருத்து அமைப்புக்கும் முதன்மையானவை. அதை முழுமையாக உடைக்காமல் "அது வேலை செய்கிறது" என்று ஒருபோதும் கருத வேண்டாம்.
- உலகளாவிய தாமதத்திற்காக வடிவமைக்கவும்: உலகளவில் வரிசைப்படுத்தும்போது, வெவ்வேறு புவியியல் பிராந்தியங்களில் நிலைத்தன்மை மற்றும் செயல்திறன் இரண்டையும் மேம்படுத்த உங்கள் கோரம் வைப்பு, நெட்வொர்க் டோபாலஜி மற்றும் வாடிக்கையாளர் வாசிப்பு உத்திகளை கவனமாகக் கருத்தில் கொள்ளுங்கள்.
-
நிலைத்தன்மை மற்றும் நீடித்த தன்மை: உங்கள் அடிப்படைக் சேமிப்பக அடுக்கு வலுவானது என்பதையும், செயலிழப்புச் சூழ்நிலைகளில் தரவு இழப்பைத் தடுக்க
fsyncஅல்லது அதற்கு சமமான செயல்பாடுகள் சரியாகப் பயன்படுத்தப்படுகின்றன என்பதையும் உறுதிப்படுத்தவும்.
பரவலாக்கப்பட்ட அமைப்புகள் தொடர்ந்து உருவாகும்போது, ராஃப்டால் உருவகப்படுத்தப்பட்ட கோட்பாடுகள்—தெளிவு, வலிமை மற்றும் பிழை சகிப்புத்தன்மை—நம்பகமான மென்பொருள் பொறியியலின் மூலைக்கற்களாக இருக்கும். ராஃப்டில் தேர்ச்சி பெறுவதன் மூலம், பரவலாக்கப்பட்ட கணினியின் தவிர்க்க முடியாத குழப்பத்தைத் தாங்கக்கூடிய மீள்திறன் கொண்ட, உலகளவில் அளவிடக்கூடிய பயன்பாடுகளை உருவாக்க ஒரு சக்திவாய்ந்த கருவி மூலம் உங்களைச் சித்தப்படுத்துகிறீர்கள்.